#if !defined(ximera_graphics_igraphicssystem_hpp)
#define ximera_graphics_igraphicssystem_hpp

// -----------------------------------------------------------

#include <ximera/system/isystem.hpp>
#include <ximera/math/color.hpp>
#include <ximera/graphics/iworld.hpp>

namespace ximera { namespace graphics
{
    class XIMERA_API IGraphicsSystem : public system::ISystem
    {
    public:
        virtual IWorld* createWorld() = 0;
        virtual void render() = 0;

        virtual void ambientLight(math::Color const& color) = 0;
        
        virtual void skyDome(String const& materialName) = 0;
        virtual bool isSkyDomeEnabled() const = 0;
        virtual void disableSkyDome() = 0;

        virtual void skyBox(String const& materialName) = 0;
        virtual bool isSkyBoxEnabled() const = 0;
        virtual void disableSkyBox() = 0;
    };
}}

// -----------------------------------------------------------

#endif
